<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>基础知识</title>
	<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"" rel="stylesheet">
	<link href="https://cdn.bootcdn.net/ajax/libs/animate.css/3.2.3/animate.css" rel="stylesheet">
	<link rel="stylesheet" type="text/css" href="../../static/css/public.css" />
</head>
<body>
	<!--右边内容-->
	<div id="app" class="main animated fadeInRight">
		<div class="shadow" v-cloak>
			<div>
				<div>
					<div class="Table">
						<div class="TableRow" v-for="(el,index) in list">
							<a class="RowRight" :href="'#'+el.id">{{el.name}}</a>
						</div>
					</div>	
				</div>
				<div>
					<div>
						<h4  id="getMobile">判断手机类型</h4>
						<pre>
	getMobile () {
	   var u = navigator.userAgent
	   var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1 // g
	   var isIOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/) // ios终端
	   if (isAndroid) {
	     return 'Android'
	   }
	   if (isIOS) {
	     return 'IOS'
	   }
	}   
	手机端判断浏览器类型
	BrowserInfo = {      
	  isAndroid: Boolean(navigator.userAgent.match(/android/ig)),      
	  isIphone: Boolean(navigator.userAgent.match(/iphone|ipod/ig)),      
	  isIpad: Boolean(navigator.userAgent.match(/ipad/ig)),      
	  isWeixin: Boolean(navigator.userAgent.match(/MicroMessenger/ig)),      
	  isAli: Boolean(navigator.userAgent.match(/AlipayClient/ig)),
	  isPhone: Boolean(/(iPhone|iPad|iPod|iOS|Android)/i.test(navigator.userAgent))
	}
						</pre>
					</div>
					<div>
						<h4  id="Browser">判断微信/QQ浏览器</h4>
						<pre>
	let url = navigator.userAgent.toLowerCase()
	//使用toLowerCase将字符串全部转为小写 方便我们判断使用
	if (url.indexOf('15b202 qq') > -1) {
	  //单独判断QQ内置浏览器
	  alert('QQ APP 内置浏览器，做你想做的操作')
	}
	if (url.indexOf('micromessenger') > -1) {
	  //单独判断微信内置浏览器
	  alert('微信内置浏览器，做你想做的操作')
	}
	if (url.indexOf('15b202') > -1) {
	  //判断微信内置浏览器，QQ内置浏览器
	  alert('QQ和微信内置浏览器，做你想做的操作')
	}   
						</pre>
					</div>
					<div>
						<h4  id="isHidden">判断手机开屏/息屏</h4>
						<pre>
	document.addEventListener('visibilitychange', () => {
	  console.log(document.visibilityState)
	  if (document.visibilityState === 'hidden') {
	    console.log('息屏时间')
	  } else if (document.visibilityState === 'visible' && vm.hidden) {
	    console.log('开屏时间')
	  }
	})  
						</pre>
					</div>
					<div>
						<h4  id="online">监听浏览器的联网状态</h4>
						<pre>
	window.addEventListener("offline", function(e) {alert("offline");})
	window.addEventListener("online", function(e) {alert("online");})
	
	if(window.navigator.onLine==true){
	  alert（"已连接"）
	}else{
	  alert（"未连接"）
	}
						</pre>
					</div>
					<div>
						<h4  id="resize">检测手机是否横屏</h4>
						<pre>
	window.addEventListener('resize', () => {
	  if (window.orientation === 180 || window.orientation === 0) {
	    // 正常方向或屏幕旋转180度
	    console.log('竖屏')
	  }
	  if (window.orientation === 90 || window.orientation === -90) {
	    // 屏幕顺时钟旋转90度或屏幕逆时针旋转90度
	    console.log('横屏')
	  }
	})
						</pre>
					</div>
					<div>
						<h4  id="delay">移动端300ms延迟</h4>
						<pre>
	由来：
	300毫米延迟解决的是双击缩放。双击缩放，手指在屏幕快速点击两次。
	safari浏览器就会将网页缩放值原始比例。由于用户可以双击缩放或者是滚动的操作，
	当用户点击屏幕一次之后，浏览器并不会判断用户确实要打开至这个链接，还是想要进行双击操作
	因此，safair浏览器就会等待300ms，用来判断用户是否在次点击了屏幕
	       
	解决方案：	1.禁用缩放，设置meta标签 user-scalable=no
				2.fastclick.js
		原理：	FastClick的实现原理是在检查到touchend事件的时候，会通过dom自定义事件立即
		    发出click事件，并把浏览器在300ms之后真正的click事件阻止掉
	fastclick.js还可以解决穿透问题
						</pre>
					</div>
				</div>
			</div>
		</div>
	</div>
	<!--页面加载进度条-->
	<script src="https://cdn.bootcdn.net/ajax/libs/pace/0.5.0/pace.min.js"></script>
	<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.5.17/vue.js" type="text/javascript" charset="utf-8"></script>
	<script type="text/javascript">
		var app = new Vue({
			el: "#app",
			data: function () {
				return {
					list:[
						{name:"判断手机类型",id:"getMobile"},
						{name:"判断微信/QQ浏览器",id:"Browser"},
						{name:"判断手机开屏/息屏",id:"isHidden"},
						{name:"监听浏览器的联网状态",id:"online"},
						{name:"检测手机是否横屏",id:"resize"},
						{name:"移动端300ms延迟",id:"delay"},
					]
				}
			},
		})
	</script>
</body>

</html>